diff --git a/system/drivers/DB_mysql.php b/system/drivers/DB_mysql.php
index 82e677a..a90d842 100644
--- a/system/drivers/DB_mysql.php
+++ b/system/drivers/DB_mysql.php
@@ -126,10 +126,6 @@
 	 */
 	function escape_str($str)	
 	{	
-		if (get_magic_quotes_gpc())
-		{
-			$str = stripslashes($str); 
-		}
 		return mysql_real_escape_string($str);
 	}
 	
diff --git a/system/drivers/DB_mysqli.php b/system/drivers/DB_mysqli.php
index 32c4c0f..75c01e7 100644
--- a/system/drivers/DB_mysqli.php
+++ b/system/drivers/DB_mysqli.php
@@ -128,10 +128,6 @@
 	 */
 	function escape_str($str)	
 	{	
-		if (get_magic_quotes_gpc())
-		{
-			$str = stripslashes($str); 
-		}
 		return mysqli_real_escape_string($this->conn_id, $str);
 	}
 	
diff --git a/system/drivers/DB_postgre.php b/system/drivers/DB_postgre.php
index 3829b04..cf59f0f 100644
--- a/system/drivers/DB_postgre.php
+++ b/system/drivers/DB_postgre.php
@@ -110,10 +110,6 @@
 	 */
 	function escape_str($str)	
 	{	
-		if (get_magic_quotes_gpc())
-		{
-			$str = stripslashes($str); 
-		}
 		return pg_escape_string($str);
 	}
 	
diff --git a/system/drivers/DB_sqlite.php b/system/drivers/DB_sqlite.php
index 1192e6d..b2c31a8 100644
--- a/system/drivers/DB_sqlite.php
+++ b/system/drivers/DB_sqlite.php
@@ -131,10 +131,6 @@
 	 */
 	function escape_str($str)	
 	{
-		if (get_magic_quotes_gpc())
-		{
-			$str = stripslashes($str); 
-		}
 		return sqlite_escape_string($str);
 	}
 	
diff --git a/system/helpers/form_helper.php b/system/helpers/form_helper.php
index d4e45a0..0691010 100644
--- a/system/helpers/form_helper.php
+++ b/system/helpers/form_helper.php
@@ -38,11 +38,16 @@
  * @param	array	a key/value pair hidden data
  * @return	string
  */	
-function form_open($action, $attributes = array(), $hidden = array())
+function form_open($action = '', $attributes = array(), $hidden = array())
 {
 	$obj =& get_instance();
 
-	$form = '<form method="post" action="'.$obj->config->site_url($action).'"';
+	$form = '<form action="'.$obj->config->site_url($action).'"';
+	
+	if ( ! isset($attributes['method']))
+	{
+		$form .= ' method="post"';
+	}
 	
 	if (is_array($attributes) AND count($attributes) > 0)
 	{
diff --git a/system/libraries/Encrypt.php b/system/libraries/Encrypt.php
index 532bfe1..bcffdf1 100644
--- a/system/libraries/Encrypt.php
+++ b/system/libraries/Encrypt.php
@@ -322,7 +322,7 @@
 	 */		
 	function set_hash($type = 'sha1')
 	{
-		$this->_hash_type = ($type != 'sha1' OR $type != 'md5') ? 'sha1' : $type;
+		$this->_hash_type = ($type != 'sha1' AND $type != 'md5') ? 'sha1' : $type;
 	}
   	// END set_hash()
   	
diff --git a/system/libraries/Language.php b/system/libraries/Language.php
index b668aa0..328d53e 100644
--- a/system/libraries/Language.php
+++ b/system/libraries/Language.php
@@ -68,7 +68,7 @@
 	
 		if ( ! file_exists(BASEPATH.'language/'.$idiom.'/'.$langfile))
 		{
-			show_error('Unable to load the requested language file: language/'.$langfile.EXT);
+			show_error('Unable to load the requested language file: language/'.$langfile);
 		}
 
 		include_once(BASEPATH.'language/'.$idiom.'/'.$langfile);
diff --git a/system/libraries/Log.php b/system/libraries/Log.php
index 35e30b6..17b96b2 100644
--- a/system/libraries/Log.php
+++ b/system/libraries/Log.php
@@ -88,7 +88,7 @@
 			return FALSE;
 		}
 	
-		$filepath = $this->log_path.'log-'.date('Y-m-d').'.php';
+		$filepath = $this->log_path.'log-'.date('Y-m-d').EXT;
 		$message  = '';
 		
 		if ( ! file_exists($filepath))
diff --git a/system/libraries/Validation.php b/system/libraries/Validation.php
index df8c70e..e037e69 100644
--- a/system/libraries/Validation.php
+++ b/system/libraries/Validation.php
@@ -252,12 +252,12 @@
 				// Strip the parameter (if exists) from the rule
 				// Rules can contain a parameter: max_length[5]
 				$param = FALSE;
-				if (preg_match("/.*?(\[.*?\]).*/", $rule, $match))
+				if (preg_match("/(.*?)\[(.*?)\]/", $rule, $match))
 				{
-					$param = substr(substr($match['1'], 1), 0, -1);
-					$rule  = str_replace($match['1'], '', $rule);
+					$rule	= $match[1];
+					$param	= $match[2];
 				}
-
+				
 				// Call the function that corresponds to the rule
 				if ($callback === TRUE)
 				{
